Jak dat dll do exe?

Otázka od: Martin Novák

15. 10. 2002 6:51

Zdravim,
 jak udelat, aby soubor dll ktery pouzivam ve svem programu se pri kompilaci
pridal k exe souboru a ja jsem nemusel k exe souboru kopirovat jeste to dll.
Jdo to vubec? Rad bych mel jen jeden soubor.
 Dekuji za radu.
 S pozdravem Marin Novak.

--------------------
Stavební spoření tak, jak mu budete rozumět.
http://finance.centrum.cz/stavspor/


Odpovedá: tuffi@email.cz

15. 10. 2002 6:54

Rekni, proc bys mel mit vubec to dll? Sila dll spociva v tom, ze je osamoceny a
da se lehce menit, nebo ne?  

--- Původní zpráva ---
Od: "Martin Novák" <mnk@centrum.cz>
Datum: 15.10.2002 07:51:08

Zdravim,
 jak udelat, aby soubor dll ktery pouzivam ve svem programu se pri kompilaci
pridal k exe souboru a ja jsem nemusel k exe souboru kopirovat jeste to dll.
Jdo to vubec? Rad bych mel jen jeden soubor.
 Dekuji za radu.
 S pozdravem Marin Novak.

--------------------
Stavební spoření tak, jak mu budete rozumět.
http://finance.centrum.cz/stavspor/





______________________________________________________________________________
Nejširší nabídka PC komponent v ČR - http://www.levi.cz Neváhejte a srovnejte
možnosti dnešního hardware.

Odpovedá: Jan Sebelík

15. 10. 2002 14:55

> Odesílatel: Martin Novák <mnk@centrum.cz>
> jak udelat, aby soubor dll ktery pouzivam ve svem programu se pri kompilaci
> pridal k exe souboru a ja jsem nemusel k exe souboru kopirovat jeste to dll.
> Jdo to vubec? Rad bych mel jen jeden soubor.

Nerozumim smyslu, dll je proto dll, aby se loadovala dynamicky pri spusteni
exe, aby se dala vyuzit ve vice exe, aby se dala distribuovat bez prekladu
vsech tech exe, ...

Pokud mas k te dll zdrojaky (.dpr), lze to prepsat na unit (.pas).
Staci prenest hlavicky exportovanych procedur do sekce interface, zbytek dll
ponechat v implementation.
A samozrejme vyhazet direktivy export, exports a pod.

Jinymi slovy: pokud mas interface unit do te dll, staci v implementaci nahradit
"external" skutecnym zdrojakem prislusnych procedur.

Pokud zdrojak nemas, asi mas smulu.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================

Odpovedá: Martin Schayna

15. 10. 2002 13:41

----- Original Message -----
From: "Martin Novák" <mnk@centrum.cz>
> jak udelat, aby soubor dll ktery pouzivam ve svem programu se pri kompilaci
> pridal k exe souboru a ja jsem nemusel k exe souboru kopirovat jeste to dll.
> Jdo to vubec? Rad bych mel jen jeden soubor.

Tak jednoduse to v Delphi IMHO nelze. Mas dve moznosti:

1) pokud mas k dispozici obj soubory vznikle pri prekladu toho dll, muzes
je includnout do exe projektu a volat funkce z nich, pak se funkce stanou
soucasti exe

2) trochu pritazene za vlasy ale proc ne -- distribuovat "instalacku" ve forme
jednoho exe, ktera pri spusteni ze sebe vybali do stejneho adresare dll a pak
ho pouziva, prilinkovat k funkcim z dll se ale musi byt dynamicky (GetProcAddr
atd.)

V klasickem cecku to jde jednoduseji, protoze tam byva zvykem knihovni
funkce distribuovat primo v obou formatech, jak dll tak (tusim) lib.

Martin Schayna

Odpovedá: Petr Vones

15. 10. 2002 13:54

From: "Martin Novák" <mnk@centrum.cz>
> jak udelat, aby soubor dll ktery pouzivam ve svem programu se pri kompilaci
> pridal k exe souboru a ja jsem nemusel k exe souboru kopirovat jeste to dll.

To je prece nesmysl. V tom pripade vubec nepouzivej tu DLL a vsechen kod dej
primo do te aplikace.

Petr Vones

Odpovedá: Skopalik Slavomir

15. 10. 2002 13:54

Jo, ale ten lib je jen importem prilozene dll, takze si stejne clovek nepomuze
(ted se nebavim o systemovych knihovnach,
ale napriklad API k DB).

 Slavek

>
> V klasickem cecku to jde jednoduseji, protoze tam byva zvykem knihovni
> funkce distribuovat primo v obou formatech, jak dll tak (tusim) lib.
>
> Martin Schayna
>
>

Odpovedá: ing. Jan Fiala

15. 10. 2002 20:48

Existovala nejaka utilita, ktera to dovedla. Mohl sis vybrat, co se ma
s DLL udelat. Zda se ma pri prvnim spusteni nakopirovat do adresare
System, rozbalit do pameti, ...
Tusim se jmenovala PEBundle a ve volne siritelne verzi umela jedno
DLL.

--
ing. Jan Fiala
mailto:jan.fiala@iol.cz

15.10.2002 Martin Novák:
> Zdravim,
> jak udelat, aby soubor dll ktery pouzivam ve svem programu se pri kompilaci
> pridal k exe souboru a ja jsem nemusel k exe souboru kopirovat jeste to dll.
> Jdo to vubec? Rad bych mel jen jeden soubor.

Odpovedá: Vladimir Michl

13. 11. 2002 12:22

On Tue, 15 Oct 2002, Skopalik Slavomir wrote:

> Jo, ale ten lib je jen importem prilozene dll, takze si stejne clovek
nepomuze (ted se nebavim o systemovych knihovnach,
> ale napriklad API k DB).
>
> Slavek
>
> >
> > V klasickem cecku to jde jednoduseji, protoze tam byva zvykem knihovni
> > funkce distribuovat primo v obou formatech, jak dll tak (tusim) lib.

Pravdu mate oba.

V C na Unixech se obvykle distribuje dll a pak vsechny obj soubory v
jednom souboru (archivu) (Napr. na linuxu to ma pripony .so a .a).
Pri prekladu si pak prepinacem linkeru vyberu, zda to chci linkovat
staticky ci dynamicky (samozrejme jeste muzu pouzit treti zpusob a to
runtime-linking z programu pomoci prislusnych funkci API).

Na Windows je pro dynamicke linkovani jeste potreba importovaci knihovna,
ktera se ale da pomoci nastroju z DLL vytvorit a ta se staticky linkuje s
.exe.


---------------------------------------------------------------------------
Vladimír Michl <Vladimir.Michl@hlubocky.del.cz>
Del a.s., Strojírenská 38, Žďár nad Sázavou
pobočka Olomoucká 355, Hlubočky-Mariánské Údolí
tel: +420 585 353 548, fax: +420 585 352 364
http://hlubocky.del.cz